package com.e2a.examenenligne.ejb.serviceDAO;

import java.util.List;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import com.e2a.examenenligne.entities.Statut;
import com.e2a.examenenligne.entities.Utilisateur;
import com.e2a.examenenligne.entities.UtilisateurExpert;

@Stateless
@LocalBean
public class ServiceUtilisateur {
	@PersistenceContext
	EntityManager em;

	// Création d'un nouveau utilisateur

	public Utilisateur createUtilisateur(Utilisateur utilisateur) {
		// vérifie qu'un utilisateur n'existe pas
		@SuppressWarnings("unchecked")
		List<Utilisateur> results = em.createNamedQuery("verifyLogin").setParameter("login", utilisateur.getLogin()).getResultList();
		if (results.size() == 0) {
			em.persist(utilisateur);
			return utilisateur;

		} else
			return null;

	}

	// pour l'authentification d'un utilisateur
	public Utilisateur LoginUtilisateur(Utilisateur utilisateur) {

		Utilisateur logged = (Utilisateur) em.createNamedQuery("verifyUser")
				.setParameter("login", utilisateur.getLogin())
				.setParameter("motdepasse", utilisateur.getMotDePasse())
				.getSingleResult();

		return logged;

	}

	public List<String> ListStatut() {

		return em.createNamedQuery("findAllStaut").getResultList();
	}

	public UtilisateurExpert getExpertByLogin(String login) {
		UtilisateurExpert expert = (UtilisateurExpert) em.createNamedQuery("getExpertByLogin").setParameter("login", login).getSingleResult();

		return expert;
	}
	
	public void InitialiserStatut(List<Statut> lesStatuts){
		//on verifie avant de persister que la table est vide ou non
		if (em.createNamedQuery("findAllStaut").getResultList().isEmpty()){
			for (Statut s: lesStatuts){ em.persist(s);}
		}
		
	}
	
}
